package com.partsoft.dits.log;

import java.util.Date;

import com.partsoft.dits.EdgeDescriptor;

/**
 * 日志管理器
 */
public interface LogManager {
	
	/**
	 * 移除一条日志
	 * @param logEntity
	 */
	void removeLog(LogEntity logEntity);
	
	
	void removeLog(EdgeDescriptor descriptor);
	
	void removeLog(String dclsName, String did);
	
	/**
	 * 移除指定级别的所有日志
	 */
	void removeLog(LogLevel level);
	
	void removeLog(EdgeDescriptor descriptor, LogLevel level);
	
	void removeLog(LogLevel level, String queryString);
	
	void removeLog(EdgeDescriptor descriptor, LogLevel level, String queryString);
	
	void removeLog(String dclsName, String did, LogLevel level, String queryString);
	
	/**
	 * 移除指定类型的所有日志
	 */
	void removeLog(LogType type);
	
	void removeLog(EdgeDescriptor descriptor, LogType type);
	
	void removeLog(LogType type, String queryString);
	
	void removeLog(EdgeDescriptor descriptor, LogType type, String queryString);
	
	void removeLog(String dclsName, String did, LogType type, String queryString);

	/**
	 * 移除指定类型和指定级别的日志
	 */
	void removeLog(LogType logType, LogLevel level);
	void removeLog(LogType logType, LogLevel level, String queryString);
	void removeLog(EdgeDescriptor descriptor, LogType logType, LogLevel level, String queryString);
	
	/**
	 * 移除在指定日期之前的日志
	 */
	void removeLogBefore(Date beforeDate);
	void removeLogBefore(EdgeDescriptor descriptor, Date beforeDate);
	
	
	void removeLogBefore(Date beforeDate, String queryString);
	void removeLogBefore(EdgeDescriptor descriptor, Date beforeDate, String queryString);
	
	void removeLogBefore(LogType type, Date beforeDate);
	void removeLogBefore(EdgeDescriptor descriptor, LogType type, Date beforeDate);
	
	void removeLogBefore(LogType type, Date beforeDate, String queryString);
	void removeLogBefore(EdgeDescriptor descriptor, LogType type, Date beforeDate, String queryString);
	
	void removeLogBefore(LogType type, LogLevel level, Date beforeDate);
	void removeLogBefore(EdgeDescriptor descriptor, LogType type, LogLevel level, Date beforeDate);
	
	void removeLogBefore(LogType type, LogLevel level, Date beforeDate, String queryString);
	void removeLogBefore(EdgeDescriptor descriptor, LogType type, LogLevel level, Date beforeDate, String queryString);
	
	void removeLogBefore(LogLevel level, Date beforeDate);
	void removeLogBefore(EdgeDescriptor descriptor, LogLevel level, Date beforeDate);
	
	void removeLogBefore(LogLevel level, Date beforeDate, String queryString);
	void removeLogBefore(EdgeDescriptor descriptor, LogLevel level, Date beforeDate, String queryString);
	void removeLogBefore(String dclsName, String did, LogLevel level, Date beforeDate, String queryString);
	
	/**
	 * 移除在制定日期之后的日志
	 */
	void removeLogAfter(Date afterDate);
	void removeLogAfter(EdgeDescriptor descriptor, Date afterDate);
	
	void removeLogAfter(Date afterDate, String queryString);
	void removeLogAfter(EdgeDescriptor descriptor, Date afterDate, String queryString);
	
	void removeLogAfter(LogType type, Date afterDate);
	void removeLogAfter(EdgeDescriptor descriptor, LogType type, Date afterDate);
	
	void removeLogAfter(LogType type, Date afterDate, String queryString);
	void removeLogAfter(EdgeDescriptor descriptor, LogType type, Date afterDate, String queryString);
	
	void removeLogAfter(LogLevel level, Date afterDate);
	void removeLogAfter(EdgeDescriptor descriptor, LogLevel level, Date afterDate);
	
	void removeLogAfter(LogLevel level, Date afterDate, String queryString);
	void removeLogAfter(EdgeDescriptor descriptor, LogLevel level, Date afterDate, String queryString);
	
	void removeLogAfter(LogType type, LogLevel level, Date afterDate);
	void removeLogAfter(EdgeDescriptor descriptor, LogType type, LogLevel level, Date afterDate);
	
	void removeLogAfter(LogType type, LogLevel level, Date afterDate, String queryString);
	void removeLogAfter(EdgeDescriptor descriptor, LogType type, LogLevel level, Date afterDate, String queryString);
	void removeLogAfter(String dclsName, String did, LogType type, LogLevel level, Date afterDate, String queryString);
	
	/**
	 * 移除制定日期之间的日志
	 */
	void removeLogBetween(Date startDate, Date endDate);
	void removeLogBetween(EdgeDescriptor descriptor, Date startDate, Date endDate);
	
	void removeLogBetween(Date startDate, Date endDate, String queryString);
	void removeLogBetween(EdgeDescriptor descriptor, Date startDate, Date endDate, String queryString);
	
	void removeLogBetween(LogType type, Date startDate, Date endDate);
	void removeLogBetween(EdgeDescriptor descriptor, LogType type, Date startDate, Date endDate);
	
	void removeLogBetween(LogType type, Date startDate, Date endDate, String queryString);
	void removeLogBetween(EdgeDescriptor descriptor, LogType type, Date startDate, Date endDate, String queryString);
	
	void removeLogBetween(LogLevel level, Date startDate, Date endDate);
	void removeLogBetween(EdgeDescriptor descriptor, LogLevel level, Date startDate, Date endDate);
	
	void removeLogBetween(LogLevel level, Date startDate, Date endDate, String queryString);
	void removeLogBetween(EdgeDescriptor descriptor, LogLevel level, Date startDate, Date endDate, String queryString);
	
	void removeLogBetween(LogType type, LogLevel level, Date startDate, Date endDate);
	void removeLogBetween(EdgeDescriptor descriptor, LogType type, LogLevel level, Date startDate, Date endDate);
	
	void removeLogBetween(LogType type, LogLevel level, Date startDate, Date endDate, String queryString);
	void removeLogBetween(EdgeDescriptor descriptor, LogType type, LogLevel level, Date startDate, Date endDate, String queryString);
	
	void removeLogBetween(String dclsName, String did, LogType type, LogLevel level, Date startDate, Date endDate, String queryString);
	
}
